#pragma once

#include<iostream>
#include<functional>

#include "Log.hpp"
#include<mysql/mysql.h>

using namespace LogMudule;
//我这里的回调接口一定要有返回值，根据返回值进行处理
using func_t = std::function<void()> ;

void FUNC()
{
    LOG(LogLevel::INFO) << "sql success";
    
    return ;
}

/*void Push(std::string name)
{
    LOG(LogLevel::DEBUG)<< "我是一个推送数据到服务器的任务,我正在被"<<"["<<name<<"]"<<"执行";
}*/

class Task
{
    public:
    Task()
    {
        
    }

    Task(std::string sql)
    {
        _sql = sql;
    }

    void Handling(MYSQL *mysql)//处理任务必须要传自己的MYSQL指针
    {
        int n = mysql_query(mysql, _sql.c_str());
        if (n == 0)
            std::cout << _sql << ": success" << std::endl;
        else
            std::cout << _sql << "failed" << std::endl;
    }

    std::string str()
    {
        return _sql;
    }

    ~Task()
    {

    }

    private:
    std::string _sql;//sql语句
    func_t _cb = FUNC;//未来的回调函数，调用这个函数来进行判断，返回结果
};